-compile({i, "../../.."}).
-include_lib("ect/include/ect.hrl").

-class(alpha).
-version(1).
?FIELDS(1, private, {a = original, b}).
?FIELDS(1, public, {pub1, flag = okay}).
?FIELDS(1, private, {c}).

-methods([get_all/1, set/3, alpha_version/1]).

get_all(#alpha{a = A, b = B, pub1 = Pub1, c = C}) ->
    {A, B, Pub1, C}.

set(This, a, Val) ->
    This#alpha{a = Val};
set(This, b, Val) ->
    This#alpha{b = Val};
set(This, pub1, Val) ->
    This#alpha{pub1 = Val};
set(This, c, Val) ->
    This#alpha{c = Val}.

alpha_version(_This) ->
    v1.